<?php
/**
 * CognitiveManager34 - 3-4岁专区认知模块管理类
 * 
 * 专门处理3-4岁年龄段的认知模块管理，扩展自基础CognitiveModuleManager类
 */
class CognitiveManager34 {
    private $moduleManager;
    private $db;
    private $ageGroup = "3-4";
    
    /**
     * 构造函数
     */
    public function __construct() {
        require_once __DIR__ . '/../../../includes/CognitiveModuleManager.php';
        require_once __DIR__ . '/../../../includes/db/Database.php';
        
        $this->moduleManager = new CognitiveModuleManager();
        $this->db = Database::getInstance();
    }
    
    /**
     * 获取所有3-4岁认知模块
     * 
     * @return array 3-4岁认知模块列表
     */
    public function getAllModules() {
        return $this->moduleManager->getAllModules($this->ageGroup);
    }
    
    /**
     * 获取活跃的认知模块数量
     * 
     * @return int 活跃模块数量
     */
    public function getActiveModulesCount() {
        $sql = "SELECT COUNT(*) as count FROM cognitive_modules 
                WHERE age_group = ? AND is_active = 1";
        $result = $this->db->fetchRow($sql, [$this->ageGroup]);
        return $result ? $result['count'] : 0;
    }
    
    /**
     * 获取最新更新的认知模块
     * 
     * @param int $limit 限制数量
     * @return array 最新更新的模块列表
     */
    public function getRecentlyUpdatedModules($limit = 5) {
        $sql = "SELECT * FROM cognitive_modules 
                WHERE age_group = ? 
                ORDER BY updated_at DESC 
                LIMIT ?";
        return $this->db->fetchAll($sql, [$this->ageGroup, $limit]);
    }
    
    /**
     * 添加新的3-4岁认知模块
     * 
     * @param array $moduleData 模块数据
     * @return int 新模块ID
     */
    public function addModule($moduleData) {
        // 确保age_group是3-4
        $moduleData['age_group'] = $this->ageGroup;
        return $this->moduleManager->addModule($moduleData);
    }
    
    /**
     * 更新认知模块
     * 
     * @param int $moduleId 模块ID
     * @param array $moduleData 模块数据
     * @return bool 是否成功
     */
    public function updateModule($moduleId, $moduleData) {
        // 确保age_group是3-4
        $moduleData['age_group'] = $this->ageGroup;
        return $this->moduleManager->updateModule($moduleId, $moduleData);
    }
    
    /**
     * 通过ID获取3-4岁认知模块，并验证年龄段
     * 
     * @param int $moduleId 模块ID
     * @return array|null 认知模块信息
     */
    public function getModuleById($moduleId) {
        $module = $this->moduleManager->getModuleById($moduleId);
        if ($module && $module['age_group'] == $this->ageGroup) {
            return $module;
        }
        return null;
    }
    
    /**
     * 获取模块的所有内容
     * 
     * @param int $moduleId 模块ID
     * @return array 内容列表
     */
    public function getModuleContents($moduleId) {
        // 先验证模块是否属于3-4岁年龄段
        $module = $this->getModuleById($moduleId);
        if (!$module) {
            return [];
        }
        return $this->moduleManager->getModuleContents($moduleId);
    }
    
    /**
     * 添加新的认知内容
     * 
     * @param array $contentData 内容数据
     * @return int|false 新内容ID或失败返回false
     */
    public function addContent($contentData) {
        // 验证模块是否属于3-4岁年龄段
        $module = $this->getModuleById($contentData['module_id']);
        if (!$module) {
            return false;
        }
        return $this->moduleManager->addContent($contentData);
    }
    
    /**
     * 获取内容的所有示例
     * 
     * @param int $contentId 内容ID
     * @return array 示例列表
     */
    public function getContentExamples($contentId) {
        return $this->moduleManager->getContentExamples($contentId);
    }
    
    /**
     * 添加新的内容示例
     * 
     * @param array $exampleData 示例数据
     * @return int|false 新示例ID或失败返回false
     */
    public function addExample($exampleData) {
        // 验证内容所属模块是否属于3-4岁年龄段
        $sql = "SELECT m.* FROM cognitive_modules m
                JOIN cognitive_contents c ON c.module_id = m.module_id
                WHERE c.content_id = ? AND m.age_group = ?";
        $module = $this->db->fetchRow($sql, [$exampleData['content_id'], $this->ageGroup]);
        if (!$module) {
            return false;
        }
        return $this->moduleManager->addExample($exampleData);
    }
    
    /**
     * 获取知识百科列表
     * 
     * @param int $moduleId 模块ID
     * @return array 知识百科列表
     */
    public function getEncyclopediaEntries($moduleId) {
        // 先验证模块是否属于3-4岁年龄段
        $module = $this->getModuleById($moduleId);
        if (!$module) {
            return [];
        }
        return $this->moduleManager->getEncyclopediaEntries($moduleId);
    }
    
    /**
     * 获取模块统计信息
     * 
     * @param int $moduleId 模块ID
     * @return array 统计信息
     */
    public function getModuleStats($moduleId) {
        // 先验证模块是否属于3-4岁年龄段
        $module = $this->getModuleById($moduleId);
        if (!$module) {
            return [];
        }
        
        // 获取内容数量
        $sql1 = "SELECT COUNT(*) as content_count FROM cognitive_contents 
                 WHERE module_id = ? AND is_active = 1";
        $contentCount = $this->db->fetchRow($sql1, [$moduleId]);
        
        // 获取示例数量
        $sql2 = "SELECT COUNT(*) as example_count FROM content_examples e
                 JOIN cognitive_contents c ON e.content_id = c.content_id
                 WHERE c.module_id = ? AND e.is_active = 1";
        $exampleCount = $this->db->fetchRow($sql2, [$moduleId]);
        
        // 获取百科数量
        $sql3 = "SELECT COUNT(*) as encyclopedia_count FROM knowledge_encyclopedia
                 WHERE module_id = ? AND is_active = 1";
        $encyclopediaCount = $this->db->fetchRow($sql3, [$moduleId]);
        
        return [
            'contents' => $contentCount ? $contentCount['content_count'] : 0,
            'examples' => $exampleCount ? $exampleCount['example_count'] : 0,
            'encyclopedias' => $encyclopediaCount ? $encyclopediaCount['encyclopedia_count'] : 0
        ];
    }
} 